/*
 * Description:  Common Utils in windows
 */

#ifndef PATHUTILS_H
#define PATHUTILS_H
#include <string>
#include <vector>
#include <Windows.h>
namespace COMMON {
class PATHUTILS {
public:
	static std::string GetKnownFolder(KNOWNFOLDERID folderId, HANDLE userToken = NULL);
	static std::string GetUserAppDataRoamingFolder(HANDLE userToken = NULL);
	static std::string GetUserAppDataLocalFolder(HANDLE userToken = NULL);
	static std::string GetUserAppDataLocalLowFolder(HANDLE userToken = NULL);
	static std::string GetCommonAppDataFolder(HANDLE userToken = NULL);
	static std::string GetPublicDocumentsFolder(HANDLE userToken = NULL);
	static std::string GetProgramFilesFolder(HANDLE userToken = NULL);
	static std::string GetProgramFilesX86Folder(HANDLE userToken = NULL);
	static std::string GetSystemFolder();
	static bool IsSubDirectory(const std::string& pathA, const std::string& pathB);
	static std::wstring GetProcessFilePath(DWORD pid);
};
}
#endif
